<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // 1.new Array()
    let c = new Array()
    let colors = new Array(20) // 创建一个长度为20的数组
    let colors2 = new Array('red', 'blue', 'green') // 根据传入的字符串创建数组

    // 2. []
    let color3 = ['red', 'blue', 'green']

    // 3.Array.from(): 主要将类数组结构转换为数组实例
    // 转换类数组比如{length:2} arguments set
    console.log(Array.from('Matt')) // ['M','a','t','t]
    console.log(Array.from({length: 5, '0': '张三'})) // ['张三',,,,]

    // 3.1 Array.from()的第二个参数
    let a1 = new Set().add(1).add(2)
    console.log(Array.from(a1, (value, key) => value * 2 + key))

    // 3.2 fixme Array.from()可以接收第三个值,用于指定第二个参数中的this的指向(前提是不要使用箭头)
    console.log(Array.from(a1), function (x) {
        return x ** this.count
    }, {count: 2}) // 无效??
    // 4.Array.of() 用于将一组参数转换为数组实例
    // 用于替代在 ES6 之前常用的 Array.prototype.slice.call(arguments)
    console.log(Array.of(1,2,3,4)) // [1,2,3,4]



</script>
</body>
</html>